JavaScript in JSX with Curly Braces

JSX 在 JavaScript 檔案內撰寫類似 HTML 的標記,將渲染邏輯和內容放在同一個地方 => 元件內

<mark> 將渲染邏輯和內容放在同一個地方 
=> 好處:確保在每次編輯時保持同步。 
=> 好處:元件間彼此分開,更改時不會彼此被影響。
</mark>

想在標記中,加入一點 JavaScript 邏輯或是屬性以動態變更,可以在 JSX 中使用 {花括號}來 使用 JavaScript

You will learn

  • How to pass strings with quotes引號
  • How to reference a JavaScript variable inside JSX with curly braces
  • How to call a JavaScript function inside JSX with curly braces
  • How to use a JavaScript object inside JSX with curly braces

  • 如何在引號中傳遞字串

  • 如何使用花括號在 JSX 中參考 JavaScript 變數
  • 如何使用花括號在 JSX 中呼叫 JavaScript 函數
  • 如何在 JSX 中使用 JavaScript 物件

Q1: 如何在 JSX 中撰寫JavaScript表達式。

JSX 其實就是 JavaScript 的語法擴充。
JSX 中可以傳入字串、數字、其他JavaScript表達式、物件。
可以把資料寫死,也可以透過{ }動態呈現資料,使用 {} 在裡面放入變數 (variables) / 表達式 (expressions),撰寫 JavaScript 的邏輯。
在 JSX 中只能以2種方式使用 { }

  1. markup tag 的內容
  2. markup tag 的屬性等號右邊

Passing strings with quotes

<mark>You will learn
* How to pass strings with quotes</mark>

傳遞字串到 JSX 屬性時,可以用單引號或雙引號將字串括起來:
what- can-in-curlyBraces

expression 表達式可以放入 JS 物件中,

jsObject-curlyBraces

Q2: 如何在 JSX 中使用 {}?

在 JSX 中只能以2種方式使用 { }

  1. markup tag 的內容
  2. markup tag 的屬性等號右邊

use-{}in-JSX-2ways


Q3: 如何在 JSX 中傳入物件 / 使用 inline CSS styles。

在 JSX 中傳入物件 {name: "Ellen", age: "18"}

例如 把物件存放在一個變數person,在JSX中使用person物件,{}內放入表達式 物件的key,就可以取得物件的值value。

<>
  <h1>{person.name}</h1>
  <p>age: {person.age}</p>
</>

what- can-in-curlyBraces.png

使用 inline CSS styles {{雙大括號}}

物件以大括號表示,例如 { background-color: 'black', color: 'pink' }

因此,要在JSX中傳遞JS物件,必須將該物件外再包一對{ }大括號

<ul style={{
  backgroundColor: 'black',
  color: 'pink'
}}>

可能會在JSX中看到這種使用 inline CSS styles的情況。
!! React並不要求使用inline style(對於大多數情況,CSS classes BETTER!)。

需要使用inline style時,可以將一個物件傳給style屬性,記得 key in camelCase:

naming-in-camelCase


Q4: inline CSS styles 的屬性有什麼特別的撰寫規則嗎?請舉例。

傳入物件到style 屬性,物件外再包一對curly braces { }
物件的key要camelCase

<ul style={{
  backgroundColor: 'black',
  color: 'pink'
}}>

#inline CSS styles #JSX #{{ }} #{object} #curly braces #object in JSX #use curlyBraces in 2 ways inside JSX







Related Posts

自駕車 Sensor Fusion in Visual Perception 簡介

自駕車 Sensor Fusion in Visual Perception 簡介

How to build CICD with Jenkins as code based on container

How to build CICD with Jenkins as code based on container

關於 React 小書:dangerouslySetInnerHTML & style

關於 React 小書:dangerouslySetInnerHTML & style


Comments